<?php
/**
 * Created by PhpStorm.
 * Adminuser: Administrator
 * Date: 2019/2/14 0014
 * Time: 上午 10:57
 */
namespace app\index\controller;
use app\Base\controller\BaseHome;
use think\App;
use think\facade\Validate;
use think\Request;
use app\facade\Adminuser;
class Validatetest extends  BaseHome
{
    public function __construct(App $app = null)
    {
        parent::__construct($app);
    }
    public function addinfo(Request $Request){




        //1：验证器：
        //  使用Validate 类中的Rule属性
        //   验证器是一个自定义的类··  得继承think下面的Validate    可以建在application下面的目录下！！！
        // 得有正确的命名空间
        //  验证器就是完成Validate类中的$rule =[];的初始化
        //  在控制器中直接实例化后调用check()方法来完成验证就ok   还可以创建一个静态代理来统一验证方法的调用方法
//        $data=$Request->param();
          $data=[
                'name'=>'王晔123',
                'email'=>'506890249@qq.com',
                'password'=>'....123456',
                'phone'=>'13555555555',
            ];
//          $validate='app\index\validate\Adminuser';
//          $Adminuser=new  Adminuser();
//          $info=$Adminuser->check($data);
//          if($info){
//              return '验证通过';
//          }else{
//              return $Adminuser->getError();
//          }
        //使用当前验证器的静态代理
//        $info= Adminuser::check($data);
//        if(!$info){
//            return  Adminuser::getError();
//        }else{
//            return '验证通过';
//        }
//        $res= $this->validate($data,$validate);
//        if($res !==true){
//            return $res;
//        }
        return '验证通过了！';

    }
    //独立验证 使用验证器类中的think\Validate中的rule()方法
    //rule（）方法实际就是给当前类的$rule=[]初始化
    public function rules(){
        //验证规则
        //当前的验证规则
       $rule=[
            'name'=>['require','max'=>20,'min'=>4,'unique:users'],
            'email'=>['email'],
            'password'=>['max'=>20,'min'=>6,'alphaNum'],//验证某个字段的值是否为字母和数字，'alphaNum'
            'phone'=>['mobile','unique:users'],
        ];
       $message  =   [
            'name.require'         => '名称必须',
            'name.max'             => '名称最多不能超过20个字符',
            'name.min'             => '名称不能少于4个字符',
            'name.unique'          => '用户名重复',
            'email.email'          => '请输入正确的邮箱',
            'password.alphaNum'    => '密码只能数字和字母',
            'password.max'         => '密码长度不能大于20个字符',
            'password.min'         => '密码长度不能小于6个字符',
            'phone.phone'          => '手机号格式错误',
            'phone.unique'         => '手机号已存在'
        ];
        $data=[
            'name'=>'王晔123',
            'email'=>'506890249@qq.com',
            'password'=>'....123456',
            'phone'=>'13555555555',
        ];
            Validate::rule($rule,$message);
             $res=Validate::check($data);
        if(!$res){
            return Validate::getError();
        }
        return '验证通过！';
    }

}